Total counts and days to double

source("../covidcomp_lib.R")
joined <- readJoinJhuData()
comp_data <- joined %>% genCompData()
comp_data %>% plotComps()

Demographics

join_wb_country <- function(df, join_data, by=c("Country/Region"="country")) {
  df %>% left_join(
    join_data %>%
      mutate(country = case_when(
        grepl("Bahamas", country) ~ "The Bahamas",
        grepl("Gambia", country) ~ "Gambia, The",
        grepl("Czech", country) ~ "Czechia",
        grepl("Iran", country) ~ "Iran",
        grepl("Ivoire", country) ~ "Cote d'Ivoire",
        grepl("Brunei", country) ~ "Brunei",
        grepl("Republic of Korea", country) ~ "Korea, South",
        grepl("Korea, Rep.", country) ~ "Korea, South",
        grepl("United Kingdom of", country) ~ "United Kingdom",
        grepl("United States", country) ~ "US",
        grepl("Viet", country) ~ "Vietnam",
        grepl("Russia", country) ~ "Russia",
        grepl("Bolivia", country) ~ "Bolivia",
        grepl("Venezuela", country) ~ "Venezuela",
        grepl("Tanzania", country) ~ "Tanzania",
        grepl("Macedonia", country) ~ "North Macedonia",
        grepl("Moldova", country) ~ "Moldova",
        grepl("Egypt", country) ~ "Egypt",
        grepl("Kyrgyz", country) ~ "Kyrgyzstan",
        grepl("Slovak", country) ~ "Slovakia",
        grepl("Vincent", country) ~ "Saint Vincent and the Grenadines",
        grepl("Lucia", country) ~ "Saint Lucia",
        grepl("Martin", country) ~ "Martinique",
        # careful with Congo
        country == "Democratic Republic of the Congo" |
          country == "Congo, Dem. Rep." ~ "Congo (Kinshasa)",
        country == "Congo" | country == "Congo, Rep." ~ "Congo (Brazzaville)",
        TRUE ~ country)),
    by = by)
}

World bank population data

World bank data looks best. Only two years old.

library(wbstats)
demo_data <- joined %>%
  group_by(`Country/Region`) %>%
  summarise_at(vars(confirmed, deaths, recovered), max) %>%
  join_country(
    wb(indicator = "SP.POP.TOTL", startdate = 2018, enddate = 2018) %>%
      rename(population = value) %>%
      select(country, population)) %>%
  mutate(population = case_when(
    `Country/Region` == "Taiwan*" ~ 23780452,
    `Country/Region` == "Cruise Ship" ~ 3711,
    TRUE ~ population)) %>%
  join_country(
    wb(indicator = "SP.POP.65UP.TO.ZS", startdate = 2018, enddate = 2018) %>%
      rename(pct_over_65 = value) %>%
      select(country, pct_over_65)) %>%
  mutate(confirmed_pct = confirmed * 100 / population,
         deaths_pct = deaths * 100 / population,
         recovered_pct = recovered * 100 / population) %>%
  ungroup()

demo_data %>% arrange(desc(deaths_pct), desc(deaths))

demo_data %>%
  arrange(desc(deaths_pct), desc(deaths)) %>%
  head(15) %>%
  mutate(`Country/Region` = reorder(`Country/Region`, desc(deaths_pct))) %>%
  ggplot(aes(confirmed_pct, deaths_pct)) +
  geom_point(aes(color = `Country/Region`)) +
  geom_line(stat = "smooth", method = "lm", alpha = 0.2)

demo_data %>%
  arrange(desc(deaths_pct), desc(deaths)) %>%
  head(15) %>%
  mutate(`Country/Region` = reorder(`Country/Region`, desc(deaths_pct))) %>%
  ggplot(aes(pct_over_65, deaths_pct)) +
  geom_point(aes(color = `Country/Region`)) +
  geom_line(stat = "smooth", method = "lm", alpha = 0.2)

demo_data %>%
  filter(!`Country/Region` %in% c("Cruise Ship", "San Marino", "Martinique")) %>%
  arrange(desc(deaths_pct), desc(deaths)) %>%
  head(15) %>%
  mutate(`Country/Region` = reorder(`Country/Region`, desc(deaths_pct))) %>%
  ggplot(aes(confirmed_pct, deaths_pct)) +
  geom_point(aes(color = `Country/Region`)) +
  geom_line(stat = "smooth", method = "lm", alpha = 0.2)

demo_data %>%
  filter(!`Country/Region` %in% c("Cruise Ship", "San Marino", "Martinique")) %>%
  arrange(desc(deaths_pct), desc(deaths)) %>%
  head(15) %>%
  mutate(`Country/Region` = reorder(`Country/Region`, desc(deaths_pct))) %>%
  ggplot(aes(pct_over_65, deaths_pct)) +
  geom_point(aes(color = `Country/Region`)) +
  geom_line(stat = "smooth", method = "lm", alpha = 0.2)

demo_data %>%
  filter(!`Country/Region` %in% c("Cruise Ship", "San Marino", "Martinique",
                                  "Italy")) %>%
  arrange(desc(deaths_pct), desc(deaths)) %>%
  head(15) %>%
  mutate(`Country/Region` = reorder(`Country/Region`, desc(deaths_pct))) %>%
  ggplot(aes(pct_over_65, deaths_pct)) +
  geom_point(aes(color = `Country/Region`)) +
  geom_line(stat = "smooth", method = "lm", alpha = 0.2)


demo_data %>%
  filter(!`Country/Region` %in% c("Cruise Ship", "San Marino", "Martinique")) %>%
  arrange(desc(deaths_pct), desc(deaths)) %>%
  mutate(`Country/Region` = reorder(`Country/Region`, desc(deaths_pct))) %>%
  ggplot(aes(pct_over_65, deaths_pct)) +
  geom_point(aes(color = `Country/Region`)) +
  geom_line(stat = "smooth", method = "lm", alpha = 0.2) +
  theme(legend.position = "none")

US State-level

library(covid19us)
get_states_daily()

state_comp_data <- state_data %>%
  genCompData(geo_level = "Province/State", min_total = 2)
state_comp_data %>% plotComps()

US State testing

#library(rvest)
#library(magrittr)
#library(jsonlite)

(state_tests <- url("https://covidtracking.com/api/states/daily") %>%
  jsonlite::fromJSON() %>%
  mutate_at(vars(date), ymd))
state_tests %>% select(-total) %>%
  group_by(state) %>%
  summarise(
    positive_test_rate = sum(positive)/((sum(positive) + sum(negative)))) %>%
  arrange(desc(positive_test_rate))

state_tests %>% select(-total) %>%
  group_by(state) %>%
  gather(stat, value, -date, -state)  %>%
  mutate_at(vars(value), as.numeric) %>%
  ggplot(aes(date, value, fill = stat)) +
  geom_bar(stat = "identity") +
  facet_grid(vars(state), scales = "free_y")
states <- state_data %>%
  left_join(state_abb_map, by = c("Province/State" = "name")) %>%
  left_join(state_tests %>%
              rename_at(vars(-date, -state), list(~ paste0(., "_tests"))),
            by = c("abb" = "state", "date"))
source("../covidcomp_lib.R")
states %>% select(-abb, -dateChecked_tests) %>%
  genCompData(geo_level = "Province/State", min_total = 2) %>%
  plotComps(min_total = 2, smooth_plots = TRUE, scale_to_fit = TRUE)
jhu <- fetchPrepJhuData()
source("../covidcomp_lib.R")
p <- fetchPrepJhuData() %>%
  genCompData() %>% 
  filter(location != "San Marino") %>%
  plotComps()
suppressWarnings(print(p))
source("../covidcomp_lib.R")
covtrack <- fetchPrepCovTrackData()
p <- covtrack %>% genCompData(geo_level = "state", min_stat = "death", min_thresh = 1) %>%
  plotComps()

suppressWarnings(print(p))

Corona Data Scraper project

library(jsonlite)
cds_data <- jsonlite::fromJSON("https://coronadatascraper.com/timeseries-byLocation.json")
names(cds_data)
   [1] "THA"                              
   [2] "JPN"                              
   [3] "SGP"                              
   [4] "NPL"                              
   [5] "MYS"                              
   [6] "New South Wales, AUS"             
   [7] "Victoria, AUS"                    
   [8] "Queensland, AUS"                  
   [9] "KHM"                              
  [10] "LKA"                              
  [11] "DEU"                              
  [12] "FIN"                              
  [13] "ARE"                              
  [14] "PHL"                              
  [15] "IND"                              
  [16] "SWE"                              
  [17] "ESP"                              
  [18] "South Australia, AUS"             
  [19] "BEL"                              
  [20] "EGY"                              
  [21] "LBN"                              
  [22] "IRQ"                              
  [23] "OMN"                              
  [24] "AFG"                              
  [25] "BHR"                              
  [26] "KWT"                              
  [27] "DZA"                              
  [28] "HRV"                              
  [29] "CHE"                              
  [30] "AUT"                              
  [31] "ISR"                              
  [32] "PAK"                              
  [33] "BRA"                              
  [34] "GEO"                              
  [35] "GRC"                              
  [36] "MKD"                              
  [37] "NOR"                              
  [38] "ROU"                              
  [39] "EST"                              
  [40] "NLD"                              
  [41] "SMR"                              
  [42] "BLR"                              
  [43] "ISL"                              
  [44] "LTU"                              
  [45] "MEX"                              
  [46] "NZL"                              
  [47] "NGA"                              
  [48] "Western Australia, AUS"           
  [49] "IRL"                              
  [50] "LUX"                              
  [51] "MCO"                              
  [52] "QAT"                              
  [53] "ECU"                              
  [54] "AZE"                              
  [55] "ARM"                              
  [56] "DOM"                              
  [57] "IDN"                              
  [58] "PRT"                              
  [59] "AND"                              
  [60] "Tasmania, AUS"                    
  [61] "LVA"                              
  [62] "MAR"                              
  [63] "SAU"                              
  [64] "SEN"                              
  [65] "ARG"                              
  [66] "CHL"                              
  [67] "JOR"                              
  [68] "UKR"                              
  [69] "HUN"                              
  [70] "Northern Territory, AUS"          
  [71] "LIE"                              
  [72] "POL"                              
  [73] "TUN"                              
  [74] "BIH"                              
  [75] "SVN"                              
  [76] "ZAF"                              
  [77] "BTN"                              
  [78] "CMR"                              
  [79] "COL"                              
  [80] "CRI"                              
  [81] "PER"                              
  [82] "SRB"                              
  [83] "SVK"                              
  [84] "TGO"                              
  [85] "GUF"                              
  [86] "MLT"                              
  [87] "MTQ"                              
  [88] "BGR"                              
  [89] "MDV"                              
  [90] "BGD"                              
  [91] "PRY"                              
  [92] "ALB"                              
  [93] "CYP"                              
  [94] "BRN"                              
  [95] "WA, USA"                          
  [96] "NY, USA"                          
  [97] "CA, USA"                          
  [98] "MA, USA"                          
  [99] "GA, USA"                          
 [100] "CO, USA"                          
 [101] "FL, USA"                          
 [102] "NJ, USA"                          
 [103] "OR, USA"                          
 [104] "TX, USA"                          
 [105] "IL, USA"                          
 [106] "PA, USA"                          
 [107] "IA, USA"                          
 [108] "MD, USA"                          
 [109] "NC, USA"                          
 [110] "SC, USA"                          
 [111] "TN, USA"                          
 [112] "AZ, USA"                          
 [113] "IN, USA"                          
 [114] "KY, USA"                          
 [115] "DC, USA"                          
 [116] "NV, USA"                          
 [117] "NH, USA"                          
 [118] "MN, USA"                          
 [119] "NE, USA"                          
 [120] "OH, USA"                          
 [121] "RI, USA"                          
 [122] "WI, USA"                          
 [123] "CT, USA"                          
 [124] "HI, USA"                          
 [125] "OK, USA"                          
 [126] "UT, USA"                          
 [127] "BFA"                              
 [128] "VAT"                              
 [129] "MNG"                              
 [130] "PAN"                              
 [131] "KS, USA"                          
 [132] "LA, USA"                          
 [133] "MO, USA"                          
 [134] "VT, USA"                          
 [135] "AK, USA"                          
 [136] "AR, USA"                          
 [137] "DE, USA"                          
 [138] "ID, USA"                          
 [139] "ME, USA"                          
 [140] "MI, USA"                          
 [141] "MS, USA"                          
 [142] "MT, USA"                          
 [143] "NM, USA"                          
 [144] "ND, USA"                          
 [145] "SD, USA"                          
 [146] "WV, USA"                          
 [147] "WY, USA"                          
 [148] "Hubei, CHN"                       
 [149] "IRN"                              
 [150] "KOR"                              
 [151] "FRA"                              
 [152] "Guangdong, CHN"                   
 [153] "Henan, CHN"                       
 [154] "Zhejiang, CHN"                    
 [155] "Hunan, CHN"                       
 [156] "Anhui, CHN"                       
 [157] "Jiangxi, CHN"                     
 [158] "Shandong, CHN"                    
 [159] "Jiangsu, CHN"                     
 [160] "Chongqing, CHN"                   
 [161] "Sichuan, CHN"                     
 [162] "Heilongjiang, CHN"                
 [163] "UK, GBR"                          
 [164] "DNK"                              
 [165] "Beijing, CHN"                     
 [166] "Shanghai, CHN"                    
 [167] "Hebei, CHN"                       
 [168] "Fujian, CHN"                      
 [169] "Guangxi, CHN"                     
 [170] "Shaanxi, CHN"                     
 [171] "Yunnan, CHN"                      
 [172] "Hainan, CHN"                      
 [173] "Guizhou, CHN"                     
 [174] "Tianjin, CHN"                     
 [175] "Shanxi, CHN"                      
 [176] "Gansu, CHN"                       
 [177] "Hong Kong, CHN"                   
 [178] "Liaoning, CHN"                    
 [179] "Jilin, CHN"                       
 [180] "CZE"                              
 [181] "Xinjiang, CHN"                    
 [182] "Inner Mongolia, CHN"              
 [183] "Ningxia, CHN"                     
 [184] "TWN"                              
 [185] "VNM"                              
 [186] "RUS"                              
 [187] "Qinghai, CHN"                     
 [188] "Macau, CHN"                       
 [189] "MDA"                              
 [190] "BOL"                              
 [191] "Faroe Islands, DNK"               
 [192] "St Martin, FRA"                   
 [193] "HND"                              
 [194] "Channel Islands, GBR"             
 [195] "Tibet, CHN"                       
 [196] "COD"                              
 [197] "CIV"                              
 [198] "Saint Barthelemy, FRA"            
 [199] "JAM"                              
 [200] "REU"                              
 [201] "TUR"                              
 [202] "Gibraltar, GBR"                   
 [203] "Kitsap County, WA, USA"           
 [204] "Solano County, CA, USA"           
 [205] "Santa Cruz County, CA, USA"       
 [206] "Napa County, CA, USA"             
 [207] "Ventura County, CA, USA"          
 [208] "Worcester County, MA, USA"        
 [209] "Gwinnett County, GA, USA"         
 [210] "DeKalb County, GA, USA"           
 [211] "Floyd County, KY, USA"            
 [212] "Fayette County, GA, USA"          
 [213] "Gregg County, TX, USA"            
 [214] "Monmouth County, NJ, USA"         
 [215] "Burlington County, NJ, USA"       
 [216] "Camden County, NJ, USA"           
 [217] "Passaic County, NJ, USA"          
 [218] "Union County, NJ, USA"            
 [219] "Eagle County, CO, USA"            
 [220] "Larimer County, CO, USA"          
 [221] "Arapahoe County, CO, USA"         
 [222] "Gunnison County, CO, USA"         
 [223] "Kane County, IL, USA"             
 [224] "Monroe County, PA, USA"           
 [225] "Philadelphia County, PA, USA"     
 [226] "Prince George's County, MD, USA"  
 [227] "Pottawattamie County, IA, USA"    
 [228] "Kershaw County, SC, USA"          
 [229] "Pima County, AZ, USA"             
 [230] "Noble County, IN, USA"            
 [231] "Adams County, PA, USA"            
 [232] "Boone County, IN, USA"            
 [233] "Dane County, WI, USA"             
 [234] "Pierce County, WI, USA"           
 [235] "Cuyahoga County, OH, USA"         
 [236] "Weber County, UT, USA"            
 [237] "Bennington County, VT, USA"       
 [238] "Carver County, MN, USA"           
 [239] "Charlotte County, FL, USA"        
 [240] "Cherokee County, GA, USA"         
 [241] "Collin County, TX, USA"           
 [242] "Jefferson County, KY, USA"        
 [243] "Jefferson County, LA, USA"        
 [244] "Shasta County, CA, USA"           
 [245] "Spartanburg County, SC, USA"      
 [246] "Harrison County, KY, USA"         
 [247] "Johnson County, IA, USA"          
 [248] "Berkshire County, MA, USA"        
 [249] "Davidson County, TN, USA"         
 [250] "Douglas County, OR, USA"          
 [251] "Fresno County, CA, USA"           
 [252] "Harford County, MD, USA"          
 [253] "Hendricks County, IN, USA"        
 [254] "Hudson County, NJ, USA"           
 [255] "Johnson County, KS, USA"          
 [256] "Kittitas County, WA, USA"         
 [257] "Manatee County, FL, USA"          
 [258] "Marion County, OR, USA"           
 [259] "Okaloosa County, FL, USA"         
 [260] "Polk County, GA, USA"             
 [261] "Riverside County, CA, USA"        
 [262] "Shelby County, TN, USA"           
 [263] "St. Louis County, MO, USA"        
 [264] "Suffolk County, NY, USA"          
 [265] "Ulster County, NY, USA"           
 [266] "Volusia County, FL, USA"          
 [267] "Rockingham County, NH, USA"       
 [268] "Montgomery County, PA, USA"       
 [269] "Alameda County, CA, USA"          
 [270] "Broward County, FL, USA"          
 [271] "Lee County, FL, USA"              
 [272] "Pinal County, AZ, USA"            
 [273] "Rockland County, NY, USA"         
 [274] "Saratoga County, NY, USA"         
 [275] "Charleston County, SC, USA"       
 [276] "Clark County, WA, USA"            
 [277] "Cobb County, GA, USA"             
 [278] "Davis County, UT, USA"            
 [279] "El Paso County, CO, USA"          
 [280] "Honolulu County, HI, USA"         
 [281] "Jackson County, OR, USA"          
 [282] "Jefferson County, WA, USA"        
 [283] "Klamath County, OR, USA"          
 [284] "Madera County, CA, USA"           
 [285] "Pierce County, WA, USA"           
 [286] "Tulsa County, OK, USA"            
 [287] "Douglas County, CO, USA"          
 [288] "Providence County, RI, USA"       
 [289] "Chatham County, NC, USA"          
 [290] "Delaware County, PA, USA"         
 [291] "Douglas County, NE, USA"          
 [292] "Fayette County, KY, USA"          
 [293] "Marion County, IN, USA"           
 [294] "Middlesex County, MA, USA"        
 [295] "Nassau County, NY, USA"           
 [296] "Ramsey County, MN, USA"           
 [297] "Washoe County, NV, USA"           
 [298] "Wayne County, PA, USA"            
 [299] "Yolo County, CA, USA"             
 [300] "Santa Clara County, CA, USA"      
 [301] "Clark County, NV, USA"            
 [302] "Fort Bend County, TX, USA"        
 [303] "Grant County, WA, USA"            
 [304] "Santa Rosa County, FL, USA"       
 [305] "Williamson County, TN, USA"       
 [306] "New York County, NY, USA"         
 [307] "Montgomery County, MD, USA"       
 [308] "Suffolk County, MA, USA"          
 [309] "Denver County, CO, USA"           
 [310] "Summit County, CO, USA"           
 [311] "Bergen County, NJ, USA"           
 [312] "Harris County, TX, USA"           
 [313] "San Francisco County, CA, USA"    
 [314] "Contra Costa County, CA, USA"     
 [315] "Orange County, CA, USA"           
 [316] "Norfolk County, MA, USA"          
 [317] "Maricopa County, AZ, USA"         
 [318] "Wake County, NC, USA"             
 [319] "Westchester County, NY, USA"      
 [320] "Grafton County, NH, USA"          
 [321] "Hillsborough County, FL, USA"     
 [322] "Placer County, CA, USA"           
 [323] "San Mateo County, CA, USA"        
 [324] "Sonoma County, CA, USA"           
 [325] "Umatilla County, OR, USA"         
 [326] "Fulton County, GA, USA"           
 [327] "Washington County, OR, USA"       
 [328] "Snohomish County, WA, USA"        
 [329] "Humboldt County, CA, USA"         
 [330] "Sacramento County, CA, USA"       
 [331] "San Diego County, CA, USA"        
 [332] "San Benito County, CA, USA"       
 [333] "Los Angeles County, CA, USA"      
 [334] "King County, WA, USA"             
 [335] "Cook County, IL, USA"             
 [336] "Skagit County, WA, USA"           
 [337] "Thurston County, WA, USA"         
 [338] "Whatcom County, WA, USA"          
 [339] "Marin County, CA, USA"            
 [340] "Calaveras County, CA, USA"        
 [341] "Stanislaus County, CA, USA"       
 [342] "Essex County, MA, USA"            
 [343] "Charlton County, GA, USA"         
 [344] "Collier County, FL, USA"          
 [345] "Pinellas County, FL, USA"         
 [346] "Alachua County, FL, USA"          
 [347] "Nassau County, FL, USA"           
 [348] "Pasco County, FL, USA"            
 [349] "Dallas County, TX, USA"           
 [350] "Tarrant County, TX, USA"          
 [351] "Montgomery County, TX, USA"       
 [352] "Middlesex County, NJ, USA"        
 [353] "Jefferson County, CO, USA"        
 [354] "Multnomah County, OR, USA"        
 [355] "Polk County, OR, USA"             
 [356] "Deschutes County, OR, USA"        
 [357] "McHenry County, IL, USA"          
 [358] "Lake County, IL, USA"             
 [359] "Bucks County, PA, USA"            
 [360] "Lancaster County, SC, USA"        
 [361] "Sullivan County, TN, USA"         
 [362] "Johnson County, IN, USA"          
 [363] "Howard County, IN, USA"           
 [364] "St. Joseph County, IN, USA"       
 [365] "Knox County, NE, USA"             
 [366] "Stark County, OH, USA"            
 [367] "Anoka County, MN, USA"            
 [368] "Olmsted County, MN, USA"          
 [369] "Summit County, UT, USA"           
 [370] "Fairfield County, CT, USA"        
 [371] "Litchfield County, CT, USA"       
 [372] "Orleans County, LA, USA"          
 [373] "Pennington County, SD, USA"       
 [374] "Beadle County, SD, USA"           
 [375] "Charles Mix County, SD, USA"      
 [376] "Davison County, SD, USA"          
 [377] "Minnehaha County, SD, USA"        
 [378] "Bon Homme County, SD, USA"        
 [379] "Socorro County, NM, USA"          
 [380] "Bernalillo County, NM, USA"       
 [381] "Oakland County, MI, USA"          
 [382] "Wayne County, MI, USA"            
 [383] "New Castle County, DE, USA"       
 [384] "AUS"                              
 [385] "USA"                              
 [386] "CHN"                              
 [387] "GBR"                              
 [388] "ITA"                              
 [389] "Accomack County, VA, USA"         
 [390] "Albemarle County, VA, USA"        
 [391] "Alexandria County, VA, USA"       
 [392] "Alleghany County, VA, USA"        
 [393] "Amelia County, VA, USA"           
 [394] "Amherst County, VA, USA"          
 [395] "Appomattox County, VA, USA"       
 [396] "Arlington County, VA, USA"        
 [397] "Augusta County, VA, USA"          
 [398] "Bath County, VA, USA"             
 [399] "Bedford County, VA, USA"          
 [400] "Bland County, VA, USA"            
 [401] "Botetourt County, VA, USA"        
 [402] "Bristol County, VA, USA"          
 [403] "Brunswick County, VA, USA"        
 [404] "Buchanan County, VA, USA"         
 [405] "Buckingham County, VA, USA"       
 [406] "Buena Vista County, VA, USA"      
 [407] "Campbell County, VA, USA"         
 [408] "Caroline County, VA, USA"         
 [409] "Carroll County, VA, USA"          
 [410] "Charles City County, VA, USA"     
 [411] "Charlotte County, VA, USA"        
 [412] "Charlottesville County, VA, USA"  
 [413] "Chesapeake County, VA, USA"       
 [414] "Chesterfield County, VA, USA"     
 [415] "Clarke County, VA, USA"           
 [416] "Colonial Heights County, VA, USA" 
 [417] "Covington County, VA, USA"        
 [418] "Craig County, VA, USA"            
 [419] "Culpeper County, VA, USA"         
 [420] "Cumberland County, VA, USA"       
 [421] "Danville County, VA, USA"         
 [422] "Dickenson County, VA, USA"        
 [423] "Dinwiddie County, VA, USA"        
 [424] "Emporia County, VA, USA"          
 [425] "Essex County, VA, USA"            
 [426] "Fairfax city, VA, USA"            
 [427] "Fairfax County, VA, USA"          
 [428] "Falls Church County, VA, USA"     
 [429] "Fauquier County, VA, USA"         
 [430] "Floyd County, VA, USA"            
 [431] "Fluvanna County, VA, USA"         
 [432] "Franklin city, VA, USA"           
 [433] "Franklin County, VA, USA"         
 [434] "Frederick County, VA, USA"        
 [435] "Fredericksburg County, VA, USA"   
 [436] "Galax County, VA, USA"            
 [437] "Giles County, VA, USA"            
 [438] "Gloucester County, VA, USA"       
 [439] "Goochland County, VA, USA"        
 [440] "Grayson County, VA, USA"          
 [441] "Greene County, VA, USA"           
 [442] "Greensville County, VA, USA"      
 [443] "Halifax County, VA, USA"          
 [444] "Hampton County, VA, USA"          
 [445] "Hanover County, VA, USA"          
 [446] "Harrisonburg County, VA, USA"     
 [447] "Henrico County, VA, USA"          
 [448] "Henry County, VA, USA"            
 [449] "Highland County, VA, USA"         
 [450] "Hopewell County, VA, USA"         
 [451] "Isle of Wight County, VA, USA"    
 [452] "James City County, VA, USA"       
 [453] "King and Queen County, VA, USA"   
 [454] "King George County, VA, USA"      
 [455] "King William County, VA, USA"     
 [456] "Lancaster County, VA, USA"        
 [457] "Lee County, VA, USA"              
 [458] "Lexington County, VA, USA"        
 [459] "Loudoun County, VA, USA"          
 [460] "Louisa County, VA, USA"           
 [461] "Lunenburg County, VA, USA"        
 [462] "Lynchburg County, VA, USA"        
 [463] "Madison County, VA, USA"          
 [464] "Manassas County, VA, USA"         
 [465] "Manassas Park County, VA, USA"    
 [466] "Martinsville County, VA, USA"     
 [467] "Mathews County, VA, USA"          
 [468] "Mecklenburg County, VA, USA"      
 [469] "Middlesex County, VA, USA"        
 [470] "Montgomery County, VA, USA"       
 [471] "Nelson County, VA, USA"           
 [472] "New Kent County, VA, USA"         
 [473] "Newport News County, VA, USA"     
 [474] "Norfolk County, VA, USA"          
 [475] "Northampton County, VA, USA"      
 [476] "Northumberland County, VA, USA"   
 [477] "Norton County, VA, USA"           
 [478] "Nottoway County, VA, USA"         
 [479] "Orange County, VA, USA"           
 [480] "Page County, VA, USA"             
 [481] "Patrick County, VA, USA"          
 [482] "Petersburg County, VA, USA"       
 [483] "Pittsylvania County, VA, USA"     
 [484] "Poquoson County, VA, USA"         
 [485] "Portsmouth County, VA, USA"       
 [486] "Powhatan County, VA, USA"         
 [487] "Prince Edward County, VA, USA"    
 [488] "Prince George County, VA, USA"    
 [489] "Prince William County, VA, USA"   
 [490] "Pulaski County, VA, USA"          
 [491] "Radford County, VA, USA"          
 [492] "Rappahannock County, VA, USA"     
 [493] "Richmond city, VA, USA"           
 [494] "Richmond County, VA, USA"         
 [495] "Roanoke city, VA, USA"            
 [496] "Roanoke County, VA, USA"          
 [497] "Rockbridge County, VA, USA"       
 [498] "Rockingham County, VA, USA"       
 [499] "Russell County, VA, USA"          
 [500] "Salem County, VA, USA"            
 [501] "Scott County, VA, USA"            
 [502] "Shenandoah County, VA, USA"       
 [503] "Smyth County, VA, USA"            
 [504] "Southampton County, VA, USA"      
 [505] "Spotsylvania County, VA, USA"     
 [506] "Stafford County, VA, USA"         
 [507] "Staunton County, VA, USA"         
 [508] "Suffolk County, VA, USA"          
 [509] "Surry County, VA, USA"            
 [510] "Sussex County, VA, USA"           
 [511] "Tazewell County, VA, USA"         
 [512] "Virginia Beach County, VA, USA"   
 [513] "Warren County, VA, USA"           
 [514] "Washington County, VA, USA"       
 [515] "Waynesboro County, VA, USA"       
 [516] "Westmoreland County, VA, USA"     
 [517] "Williamsburg County, VA, USA"     
 [518] "Winchester County, VA, USA"       
 [519] "Wise County, VA, USA"             
 [520] "Wythe County, VA, USA"            
 [521] "York County, VA, USA"             
 [522] "VA, USA"                          
 [523] "Ontario, CAN"                     
 [524] "British Columbia, CAN"            
 [525] "CAN"                              
 [526] "Bexar County, TX, USA"            
 [527] "Abruzzo, ITA"                     
 [528] "Basilicata, ITA"                  
 [529] "P.A. Bolzano, ITA"                
 [530] "Calabria, ITA"                    
 [531] "Campania, ITA"                    
 [532] "Emilia Romagna, ITA"              
 [533] "Friuli Venezia Giulia, ITA"       
 [534] "Lazio, ITA"                       
 [535] "Liguria, ITA"                     
 [536] "Lombardia, ITA"                   
 [537] "Marche, ITA"                      
 [538] "Molise, ITA"                      
 [539] "Piemonte, ITA"                    
 [540] "Puglia, ITA"                      
 [541] "Sardegna, ITA"                    
 [542] "Sicilia, ITA"                     
 [543] "Toscana, ITA"                     
 [544] "P.A. Trento, ITA"                 
 [545] "Umbria, ITA"                      
 [546] "Valle d'Aosta, ITA"               
 [547] "Veneto, ITA"                      
 [548] "Spokane County, WA, USA"          
 [549] "Salt Lake County, UT, USA"        
 [550] "Zurich, CHE"                      
 [551] "Andalucía, ESP"                   
 [552] "Aragón, ESP"                      
 [553] "Asturias, ESP"                    
 [554] "Baleares, ESP"                    
 [555] "Canarias, ESP"                    
 [556] "Cantabria, ESP"                   
 [557] "Castilla-La Mancha, ESP"          
 [558] "Castilla y León, ESP"             
 [559] "Cataluña, ESP"                    
 [560] "Ceuta, ESP"                       
 [561] "C. Valenciana, ESP"               
 [562] "Extremadura, ESP"                 
 [563] "Galicia, ESP"                     
 [564] "Madrid, ESP"                      
 [565] "Melilla, ESP"                     
 [566] "Murcia, ESP"                      
 [567] "Navarra, ESP"                     
 [568] "País Vasco, ESP"                  
 [569] "La Rioja, ESP"                    
 [570] "Quebec, CAN"                      
 [571] "New York City, NY, USA"           
 [572] "(unassigned), RI, USA"            
 [573] "Walla Walla County, WA, USA"      
 [574] "Chelan County, WA, USA"           
 [575] "AG, CHE"                          
 [576] "AI, CHE"                          
 [577] "AR, CHE"                          
 [578] "BE, CHE"                          
 [579] "BL, CHE"                          
 [580] "BS, CHE"                          
 [581] "FR, CHE"                          
 [582] "GE, CHE"                          
 [583] "GL, CHE"                          
 [584] "GR, CHE"                          
 [585] "JU, CHE"                          
 [586] "LU, CHE"                          
 [587] "NE, CHE"                          
 [588] "NW, CHE"                          
 [589] "OW, CHE"                          
 [590] "SG, CHE"                          
 [591] "SH, CHE"                          
 [592] "SO, CHE"                          
 [593] "SZ, CHE"                          
 [594] "TG, CHE"                          
 [595] "TI, CHE"                          
 [596] "UR, CHE"                          
 [597] "VD, CHE"                          
 [598] "VS, CHE"                          
 [599] "ZG, CHE"                          
 [600] "ZH, CHE"                          
 [601] "Washington County, UT, USA"       
 [602] "District of Columbia, DC, USA"    
 [603] "Alberta, CAN"                     
 [604] "Floyd County, GA, USA"            
 [605] "Jefferson Parish, LA, USA"        
 [606] "Virginia Beach city, VA, USA"     
 [607] "San Joaquin County, CA, USA"      
 [608] "Adams County, IN, USA"            
 [609] "Repatriated Travellers, CAN"      
 [610] "Jefferson County, AR, USA"        
 [611] "Pitkin County, CO, USA"           
 [612] "Miami-Dade County, FL, USA"       
 [613] "St. Johns County, FL, USA"        
 [614] "Bartow County, GA, USA"           
 [615] "Lee County, GA, USA"              
 [616] "Lowndes County, GA, USA"          
 [617] "Caddo Parish, LA, USA"            
 [618] "Baltimore County, MD, USA"        
 [619] "Forrest County, MS, USA"          
 [620] "Santa Fe County, NM, USA"         
 [621] "Monroe County, NY, USA"           
 [622] "Ward County, ND, USA"             
 [623] "Linn County, OR, USA"             
 [624] "Chittenden County, VT, USA"       
 [625] "Island County, WA, USA"           
 [626] "Fond du Lac County, WI, USA"      
 [627] "Waukesha County, WI, USA"         
 [628] "Sheridan County, WY, USA"         
 [629] "DE-BB, DEU"                       
 [630] "DE-BE, DEU"                       
 [631] "DE-BW, DEU"                       
 [632] "DE-BY, DEU"                       
 [633] "DE-HE, DEU"                       
 [634] "DE-HB, DEU"                       
 [635] "DE-HH, DEU"                       
 [636] "DE-MV, DEU"                       
 [637] "DE-NI, DEU"                       
 [638] "DE-NW, DEU"                       
 [639] "DE-RP, DEU"                       
 [640] "DE-SL, DEU"                       
 [641] "DE-SN, DEU"                       
 [642] "DE-SH, DEU"                       
 [643] "DE-ST, DEU"                       
 [644] "DE-TH, DEU"                       
 [645] "CUB"                              
 [646] "GUY"                              
 [647] "Australian Capital Territory, AUS"
 [648] "KAZ"                              
 [649] "French Polynesia, FRA"            
 [650] "ETH"                              
 [651] "SDN"                              
 [652] "GIN"                              
 [653] "KEN"                              
 [654] "ATG"                              
 [655] "AL, USA"                          
 [656] "URY"                              
 [657] "GHA"                              
 [658] "PR, USA"                          
 [659] "NAM"                              
 [660] "SYC"                              
 [661] "TTO"                              
 [662] "VEN"                              
 [663] "SWZ"                              
 [664] "GAB"                              
 [665] "GTM"                              
 [666] "MRT"                              
 [667] "RWA"                              
 [668] "LCA"                              
 [669] "VCT"                              
 [670] "SUR"                              
 [671] "French Guiana, FRA"               
 [672] "GU, USA"                          
 [673] "XKX"                              
 [674] "CAF"                              
 [675] "COG"                              
 [676] "GNQ"                              
 [677] "Mayotte, FRA"                     
 [678] "UZB"                              
 [679] "Guadeloupe, FRA"                  
 [680] "BEN"                              
 [681] "LBR"                              
 [682] "Curacao, NLD"                     
 [683] "SOM"                              
 [684] "TZA"                              
 [685] "VI, USA"                          
 [686] "Cayman Islands, GBR"              
 [687] "Reunion, FRA"                     
 [688] "BRB"                              
 [689] "MNE"                              
 [690] "KGZ"                              
 [691] "MUS"                              
 [692] "Aruba, NLD"                       
 [693] "ZMB"                              
 [694] "DJI"                              
 [695] "GMB"                              
 [696] "Montserrat, GBR"                  
 [697] "BHS"                              
 [698] "Greenland, DNK"                   
 [699] "New Caledonia, FRA"               
 [700] "Bermuda, GBR"                     
 [701] "TCD"                              
 [702] "SLV"                              
 [703] "FJI"                              
 [704] "NIC"                              
 [705] "MDG"                              
 [706] "HTI"                              
 [707] "AGO"                              
 [708] "CPV"                              
 [709] "Sint Maarten, NLD"                
 [710] "NER"                              
 [711] "PNG"                              
 [712] "Isle of Man, GBR"                 
 [713] "ZWE"                              
 [714] "TLS"                              
 [715] "ERI"                              
 [716] "UGA"                              
 [717] "DMA"                              
 [718] "GRD"                              
 [719] "MOZ"                              
 [720] "SYR"                              
 [721] "GLP"                              
 [722] "MYT"                              
 [723] "GRL"                              
 [724] "GUM"                              
 [725] "GGY"                              
 [726] "JEY"                              
 [727] "PRI"                              
 [728] "Saskatchewan, CAN"                
 [729] "Manitoba, CAN"                    
 [730] "New Brunswick, CAN"               
 [731] "Anchorage, AK, USA"               
 [732] "Pulaski County, AR, USA"          
 [733] "Tulare County, CA, USA"           
 [734] "Adams County, CO, USA"            
 [735] "Carroll County, IA, USA"          
 [736] "Wyandotte County, KS, USA"        
 [737] "Montgomery County, KY, USA"       
 [738] "Androscoggin County, ME, USA"     
 [739] "Ingham County, MI, USA"           
 [740] "Kent County, MI, USA"             
 [741] "Montcalm County, MI, USA"         
 [742] "St. Clair County, MI, USA"        
 [743] "Washtenaw County, MI, USA"        
 [744] "Dakota County, MN, USA"           
 [745] "Hennepin County, MN, USA"         
 [746] "Stearns County, MN, USA"          
 [747] "Greene County, MO, USA"           
 [748] "Cass County, NE, USA"             
 [749] "Carson City, NV, USA"             
 [750] "Essex County, NJ, USA"            
 [751] "Morris County, NJ, USA"           
 [752] "(unassigned), NJ, USA"            
 [753] "Cabarrus County, NC, USA"         
 [754] "Forsyth County, NC, USA"          
 [755] "Johnston County, NC, USA"         
 [756] "Mecklenburg County, NC, USA"      
 [757] "Onslow County, NC, USA"           
 [758] "Trumbull County, OH, USA"         
 [759] "Clackamas County, OR, USA"        
 [760] "Alexandria city, VA, USA"         
 [761] "James City, VA, USA"              
 [762] "Columbia County, WA, USA"         
 [763] "Grays Harbor County, WA, USA"     
 [764] "Yakima County, WA, USA"           
 [765] "Baker County, FL, USA"            
 [766] "Bay County, FL, USA"              
 [767] "Bradford County, FL, USA"         
 [768] "Brevard County, FL, USA"          
 [769] "Calhoun County, FL, USA"          
 [770] "Citrus County, FL, USA"           
 [771] "Clay County, FL, USA"             
 [772] "Columbia County, FL, USA"         
 [773] "DeSoto County, FL, USA"           
 [774] "Dixie County, FL, USA"            
 [775] "Duval County, FL, USA"            
 [776] "Escambia County, FL, USA"         
 [777] "Flagler County, FL, USA"          
 [778] "Franklin County, FL, USA"         
 [779] "Gadsden County, FL, USA"          
 [780] "Gilchrist County, FL, USA"        
 [781] "Glades County, FL, USA"           
 [782] "Gulf County, FL, USA"             
 [783] "Hamilton County, FL, USA"         
 [784] "Hardee County, FL, USA"           
 [785] "Hendry County, FL, USA"           
 [786] "Hernando County, FL, USA"         
 [787] "Highlands County, FL, USA"        
 [788] "Holmes County, FL, USA"           
 [789] "Indian River County, FL, USA"     
 [790] "Jackson County, FL, USA"          
 [791] "Jefferson County, FL, USA"        
 [792] "Lafayette County, FL, USA"        
 [793] "Lake County, FL, USA"             
 [794] "Leon County, FL, USA"             
 [795] "Levy County, FL, USA"             
 [796] "Liberty County, FL, USA"          
 [797] "Madison County, FL, USA"          
 [798] "Marion County, FL, USA"           
 [799] "Martin County, FL, USA"           
 [800] "Monroe County, FL, USA"           
 [801] "Okeechobee County, FL, USA"       
 [802] "Orange County, FL, USA"           
 [803] "Osceola County, FL, USA"          
 [804] "Palm Beach County, FL, USA"       
 [805] "Polk County, FL, USA"             
 [806] "Putnam County, FL, USA"           
 [807] "St. Lucie County, FL, USA"        
 [808] "Sarasota County, FL, USA"         
 [809] "Seminole County, FL, USA"         
 [810] "Sumter County, FL, USA"           
 [811] "Suwannee County, FL, USA"         
 [812] "Taylor County, FL, USA"           
 [813] "Union County, FL, USA"            
 [814] "Wakulla County, FL, USA"          
 [815] "Walton County, FL, USA"           
 [816] "Washington County, FL, USA"       
 [817] "Lafourche Parish, LA, USA"        
 [818] "Orleans Parish, LA, USA"          
 [819] "Albany County, NY, USA"           
 [820] "Allegany County, NY, USA"         
 [821] "Bronx County, NY, USA"            
 [822] "Broome County, NY, USA"           
 [823] "Cattaraugus County, NY, USA"      
 [824] "Cayuga County, NY, USA"           
 [825] "Chautauqua County, NY, USA"       
 [826] "Chemung County, NY, USA"          
 [827] "Chenango County, NY, USA"         
 [828] "Clinton County, NY, USA"          
 [829] "Columbia County, NY, USA"         
 [830] "Cortland County, NY, USA"         
 [831] "Delaware County, NY, USA"         
 [832] "Dutchess County, NY, USA"         
 [833] "Erie County, NY, USA"             
 [834] "Essex County, NY, USA"            
 [835] "Franklin County, NY, USA"         
 [836] "Fulton County, NY, USA"           
 [837] "Genesee County, NY, USA"          
 [838] "Greene County, NY, USA"           
 [839] "Hamilton County, NY, USA"         
 [840] "Herkimer County, NY, USA"         
 [841] "Jefferson County, NY, USA"        
 [842] "Kings County, NY, USA"            
 [843] "Lewis County, NY, USA"            
 [844] "Livingston County, NY, USA"       
 [845] "Madison County, NY, USA"          
 [846] "Montgomery County, NY, USA"       
 [847] "Niagara County, NY, USA"          
 [848] "Oneida County, NY, USA"           
 [849] "Onondaga County, NY, USA"         
 [850] "Ontario County, NY, USA"          
 [851] "Orange County, NY, USA"           
 [852] "Orleans County, NY, USA"          
 [853] "Oswego County, NY, USA"           
 [854] "Otsego County, NY, USA"           
 [855] "Putnam County, NY, USA"           
 [856] "Queens County, NY, USA"           
 [857] "Rensselaer County, NY, USA"       
 [858] "Richmond County, NY, USA"         
 [859] "St. Lawrence County, NY, USA"     
 [860] "Schenectady County, NY, USA"      
 [861] "Schoharie County, NY, USA"        
 [862] "Schuyler County, NY, USA"         
 [863] "Seneca County, NY, USA"           
 [864] "Steuben County, NY, USA"          
 [865] "Sullivan County, NY, USA"         
 [866] "Tioga County, NY, USA"            
 [867] "Tompkins County, NY, USA"         
 [868] "Warren County, NY, USA"           
 [869] "Washington County, NY, USA"       
 [870] "Wayne County, NY, USA"            
 [871] "Wyoming County, NY, USA"          
 [872] "Yates County, NY, USA"            
 [873] "Allegheny County, PA, USA"        
 [874] "Armstrong County, PA, USA"        
 [875] "Beaver County, PA, USA"           
 [876] "Bedford County, PA, USA"          
 [877] "Berks County, PA, USA"            
 [878] "Blair County, PA, USA"            
 [879] "Bradford County, PA, USA"         
 [880] "Butler County, PA, USA"           
 [881] "Cambria County, PA, USA"          
 [882] "Cameron County, PA, USA"          
 [883] "Carbon County, PA, USA"           
 [884] "Centre County, PA, USA"           
 [885] "Chester County, PA, USA"          
 [886] "Clarion County, PA, USA"          
 [887] "Clearfield County, PA, USA"       
 [888] "Clinton County, PA, USA"          
 [889] "Columbia County, PA, USA"         
 [890] "Crawford County, PA, USA"         
 [891] "Cumberland County, PA, USA"       
 [892] "Dauphin County, PA, USA"          
 [893] "Elk County, PA, USA"              
 [894] "Erie County, PA, USA"             
 [895] "Fayette County, PA, USA"          
 [896] "Forest County, PA, USA"           
 [897] "Franklin County, PA, USA"         
 [898] "Fulton County, PA, USA"           
 [899] "Greene County, PA, USA"           
 [900] "Huntingdon County, PA, USA"       
 [901] "Indiana County, PA, USA"          
 [902] "Jefferson County, PA, USA"        
 [903] "Juniata County, PA, USA"          
 [904] "Lackawanna County, PA, USA"       
 [905] "Lancaster County, PA, USA"        
 [906] "Lawrence County, PA, USA"         
 [907] "Lebanon County, PA, USA"          
 [908] "Lehigh County, PA, USA"           
 [909] "Luzerne County, PA, USA"          
 [910] "Lycoming County, PA, USA"         
 [911] "McKean County, PA, USA"           
 [912] "Mercer County, PA, USA"           
 [913] "Mifflin County, PA, USA"          
 [914] "Montour County, PA, USA"          
 [915] "Northampton County, PA, USA"      
 [916] "Northumberland County, PA, USA"   
 [917] "Perry County, PA, USA"            
 [918] "Pike County, PA, USA"             
 [919] "Potter County, PA, USA"           
 [920] "Schuylkill County, PA, USA"       
 [921] "Snyder County, PA, USA"           
 [922] "Somerset County, PA, USA"         
 [923] "Sullivan County, PA, USA"         
 [924] "Susquehanna County, PA, USA"      
 [925] "Tioga County, PA, USA"            
 [926] "Union County, PA, USA"            
 [927] "Venango County, PA, USA"          
 [928] "Warren County, PA, USA"           
 [929] "Washington County, PA, USA"       
 [930] "Westmoreland County, PA, USA"     
 [931] "Wyoming County, PA, USA"          
 [932] "York County, PA, USA"             
 [933] "(unassigned), TN, USA"            
 [934] "Anderson County, TN, USA"         
 [935] "Bedford County, TN, USA"          
 [936] "Benton County, TN, USA"           
 [937] "Bledsoe County, TN, USA"          
 [938] "Blount County, TN, USA"           
 [939] "Bradley County, TN, USA"          
 [940] "Campbell County, TN, USA"         
 [941] "Cannon County, TN, USA"           
 [942] "Carroll County, TN, USA"          
 [943] "Carter County, TN, USA"           
 [944] "Cheatham County, TN, USA"         
 [945] "Chester County, TN, USA"          
 [946] "Claiborne County, TN, USA"        
 [947] "Clay County, TN, USA"             
 [948] "Cocke County, TN, USA"            
 [949] "Coffee County, TN, USA"           
 [950] "Crockett County, TN, USA"         
 [951] "Cumberland County, TN, USA"       
 [952] "Decatur County, TN, USA"          
 [953] "DeKalb County, TN, USA"           
 [954] "Dickson County, TN, USA"          
 [955] "Dyer County, TN, USA"             
 [956] "Fayette County, TN, USA"          
 [957] "Fentress County, TN, USA"         
 [958] "Franklin County, TN, USA"         
 [959] "Gibson County, TN, USA"           
 [960] "Giles County, TN, USA"            
 [961] "Grainger County, TN, USA"         
 [962] "Greene County, TN, USA"           
 [963] "Grundy County, TN, USA"           
 [964] "Hamblen County, TN, USA"          
 [965] "Hamilton County, TN, USA"         
 [966] "Hancock County, TN, USA"          
 [967] "Hardeman County, TN, USA"         
 [968] "Hardin County, TN, USA"           
 [969] "Hawkins County, TN, USA"          
 [970] "Haywood County, TN, USA"          
 [971] "Henderson County, TN, USA"        
 [972] "Henry County, TN, USA"            
 [973] "Hickman County, TN, USA"          
 [974] "Houston County, TN, USA"          
 [975] "Humphreys County, TN, USA"        
 [976] "Jackson County, TN, USA"          
 [977] "Jefferson County, TN, USA"        
 [978] "Johnson County, TN, USA"          
 [979] "Knox County, TN, USA"             
 [980] "Lake County, TN, USA"             
 [981] "Lauderdale County, TN, USA"       
 [982] "Lawrence County, TN, USA"         
 [983] "Lewis County, TN, USA"            
 [984] "Lincoln County, TN, USA"          
 [985] "Loudon County, TN, USA"           
 [986] "Macon County, TN, USA"            
 [987] "Madison County, TN, USA"          
 [988] "Marion County, TN, USA"           
 [989] "Marshall County, TN, USA"         
 [990] "Maury County, TN, USA"            
 [991] "McMinn County, TN, USA"           
 [992] "McNairy County, TN, USA"          
 [993] "Meigs County, TN, USA"            
 [994] "Monroe County, TN, USA"           
 [995] "Montgomery County, TN, USA"       
 [996] "Moore County, TN, USA"            
 [997] "Morgan County, TN, USA"           
 [998] "Obion County, TN, USA"            
 [999] "Overton County, TN, USA"          
[1000] "Perry County, TN, USA"            
 [ reached getOption("max.print") -- omitted 2815 entries ]
library(tidyverse)
Registered S3 method overwritten by 'dplyr':
  method           from
  print.rowwise_df     
── Attaching packages ─────────────────────────────────── tidyverse 1.2.1 ──
✓ ggplot2 3.2.1     ✓ purrr   0.3.3
✓ tibble  2.1.3     ✓ dplyr   0.8.5
✓ tidyr   1.0.2     ✓ stringr 1.4.0
✓ readr   1.3.1     ✓ forcats 0.4.0
── Conflicts ────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter()  masks stats::filter()
x purrr::flatten() masks jsonlite::flatten()
x dplyr::lag()     masks stats::lag()
ita <- cds_data[["ITA"]]
names(ita)
[1] "dates"       "country"     "url"         "aggregate"   "rating"     
[6] "coordinates" "tz"          "featureId"   "population" 
cds_data %>% head(2)
sapply(cds_data, "[[", "dates") %>% unlist() %>% names() %>% gsub("^.*\\.", "", .) %>% table() 
sapply(cds_data, names) %>% unlist %>% table %>% sort
library(tidyverse)
library(jsonlite)
library(lubridate)

cds_data <- jsonlite::fromJSON(
  "https://coronadatascraper.com/timeseries-byLocation.json")

valueOrNA <- function(x) {
  ifelse(!is.null(x), x, NA)
}

getTsMax <- function(cds_loc, metric) {
  suppressWarnings(max(as.numeric(sapply(
    Filter(function(y) {!is.null(y[[metric]])}, cds_loc$dates), "[[", metric))))
}

names(cds_data) %>%
  lapply(FUN = function(x) {
    list(
      name = x,
      country = valueOrNA(cds_data[[x]]$country),
      aggregate = valueOrNA(cds_data[[x]]$aggregate),
      state = valueOrNA(cds_data[[x]]$state),
      population = valueOrNA(cds_data[[x]]$population),
      county = valueOrNA(cds_data[[x]]$county),
      city = valueOrNA(cds_data[[x]]$city),
      max_deaths = getTsMax(cds_data[[x]], "deaths"),
      max_cases = getTsMax(cds_data[[x]], "cases"),
      max_tested = getTsMax(cds_data[[x]], "tested"),
      max_active = getTsMax(cds_data[[x]], "active"),
      max_recovered = getTsMax(cds_data[[x]], "recovered"),
      # deaths_ts = lapply(names(cds_data[[x]]$dates), FUN = function(x) {
      #   c(x = valueOrNA(cds_data[[x]]$dates[[x]]$deaths))
      # }),
      date = list(names(cds_data[[x]]$dates)),
      ts_values = list(cds_data[[x]]$dates))
    }) %>%
  bind_rows() %>% 
  mutate(
    max_deaths = na_if(max_deaths, -Inf),
    max_cases = na_if(max_cases, -Inf),
    max_tested = na_if(max_tested, -Inf),
    max_active = na_if(max_active, -Inf),
    max_recovered = na_if(max_recovered, -Inf)) %>%
  mutate(
    max_deaths_per_capita = max_deaths / population * 1e6,
    max_tested_per_capita = max_tested / population * 1e6,
    max_recovered_per_capita = max_recovered / population * 1e6,
    max_positive_test_rate = max_cases / max_tested) %>%
  unnest(c(date, ts_values)) %>%
  mutate(
    date = ymd(date),
    deaths = unlist(sapply(ts_values, FUN = function(x) {
      return(valueOrNA(x$deaths)) })),
    active = unlist(sapply(ts_values, FUN = function(x) {
      return(valueOrNA(x$active)) })),
    cases = unlist(sapply(ts_values, FUN = function(x) {
      return(valueOrNA(x$cases)) })),
    recovered = unlist(sapply(ts_values, FUN = function(x) {
      return(valueOrNA(x$recovered)) })),
    tested = unlist(sapply(ts_values, FUN = function(x) {
      return(valueOrNA(x$tested)) })),
    growthFactor = unlist(sapply(ts_values, FUN = function(x) {
      return(valueOrNA(x$growthFactor)) })),
    cfr = deaths / cases,
    ptr = cases / tested,
    rr = recovered / cases
    ) %>%
  select(-ts_values) %>%
  gather(stat, value, deaths, active, cases, recovered, tested,
         growthFactor, cfr, ptr, rr) %>%
  mutate(popM = value / population * 1e6) -> cds
read_csv(url("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv")) %>%
  mutate(cfr = deaths / cases, county = paste(county, "County")) %>%
  mutate(state = unlist(sapply(state, FUN = function(x) { unlist(valueOrNA(state.abb[which(state.name == x)])) }))) %>%
  gather(stat, total, cases, deaths, cfr) %>%
  select(-fips) %>%
  unite(county, county, state, sep = ", ") %>%
  mutate(county = paste0(county, ", USA")) %>%
  left_join(cds %>% filter(country == "USA" & aggregate == "county") %>% select(name, population) %>% unique(), by = c("county" = "name")) %>%
  mutate(popM = total / population * 1e6) %>%
  group_by(county) %>%
  mutate(max_deaths = max(total[stat == "deaths"], na.rm = TRUE)) %>%
  ungroup() %>%
  filter(max_deaths >= 5) %>%
  genPlotComps(geo_level = "county")
Parsed with column specification:
cols(
  date = col_date(format = ""),
  county = col_character(),
  state = col_character(),
  fips = col_character(),
  cases = col_double(),
  deaths = col_double()
)
attributes are not identical across measure variables;
they will be droppedDon't know how to automatically pick scale for object of type difftime. Defaulting to continuous.
LS0tCnRpdGxlOiAiQ292aWQgQ29tcGFyZSBhbmFseXNpcyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIHRoZW1lOiBsdW1lbgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKLS0tCgojIFRvdGFsIGNvdW50cyBhbmQgZGF5cyB0byBkb3VibGUKCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnNvdXJjZSgiLi4vY292aWRjb21wX2xpYi5SIikKam9pbmVkIDwtIHJlYWRKb2luSmh1RGF0YSgpCmNvbXBfZGF0YSA8LSBqb2luZWQgJT4lIGdlbkNvbXBEYXRhKCkKY29tcF9kYXRhICU+JSBwbG90Q29tcHMoKQpgYGAKCiMgRGVtb2dyYXBoaWNzCgpgYGB7cn0Kam9pbl93Yl9jb3VudHJ5IDwtIGZ1bmN0aW9uKGRmLCBqb2luX2RhdGEsIGJ5PWMoIkNvdW50cnkvUmVnaW9uIj0iY291bnRyeSIpKSB7CiAgZGYgJT4lIGxlZnRfam9pbigKICAgIGpvaW5fZGF0YSAlPiUKICAgICAgbXV0YXRlKGNvdW50cnkgPSBjYXNlX3doZW4oCiAgICAgICAgZ3JlcGwoIkJhaGFtYXMiLCBjb3VudHJ5KSB+ICJUaGUgQmFoYW1hcyIsCiAgICAgICAgZ3JlcGwoIkdhbWJpYSIsIGNvdW50cnkpIH4gIkdhbWJpYSwgVGhlIiwKICAgICAgICBncmVwbCgiQ3plY2giLCBjb3VudHJ5KSB+ICJDemVjaGlhIiwKICAgICAgICBncmVwbCgiSXJhbiIsIGNvdW50cnkpIH4gIklyYW4iLAogICAgICAgIGdyZXBsKCJJdm9pcmUiLCBjb3VudHJ5KSB+ICJDb3RlIGQnSXZvaXJlIiwKICAgICAgICBncmVwbCgiQnJ1bmVpIiwgY291bnRyeSkgfiAiQnJ1bmVpIiwKICAgICAgICBncmVwbCgiUmVwdWJsaWMgb2YgS29yZWEiLCBjb3VudHJ5KSB+ICJLb3JlYSwgU291dGgiLAogICAgICAgIGdyZXBsKCJLb3JlYSwgUmVwLiIsIGNvdW50cnkpIH4gIktvcmVhLCBTb3V0aCIsCiAgICAgICAgZ3JlcGwoIlVuaXRlZCBLaW5nZG9tIG9mIiwgY291bnRyeSkgfiAiVW5pdGVkIEtpbmdkb20iLAogICAgICAgIGdyZXBsKCJVbml0ZWQgU3RhdGVzIiwgY291bnRyeSkgfiAiVVMiLAogICAgICAgIGdyZXBsKCJWaWV0IiwgY291bnRyeSkgfiAiVmlldG5hbSIsCiAgICAgICAgZ3JlcGwoIlJ1c3NpYSIsIGNvdW50cnkpIH4gIlJ1c3NpYSIsCiAgICAgICAgZ3JlcGwoIkJvbGl2aWEiLCBjb3VudHJ5KSB+ICJCb2xpdmlhIiwKICAgICAgICBncmVwbCgiVmVuZXp1ZWxhIiwgY291bnRyeSkgfiAiVmVuZXp1ZWxhIiwKICAgICAgICBncmVwbCgiVGFuemFuaWEiLCBjb3VudHJ5KSB+ICJUYW56YW5pYSIsCiAgICAgICAgZ3JlcGwoIk1hY2Vkb25pYSIsIGNvdW50cnkpIH4gIk5vcnRoIE1hY2Vkb25pYSIsCiAgICAgICAgZ3JlcGwoIk1vbGRvdmEiLCBjb3VudHJ5KSB+ICJNb2xkb3ZhIiwKICAgICAgICBncmVwbCgiRWd5cHQiLCBjb3VudHJ5KSB+ICJFZ3lwdCIsCiAgICAgICAgZ3JlcGwoIkt5cmd5eiIsIGNvdW50cnkpIH4gIkt5cmd5enN0YW4iLAogICAgICAgIGdyZXBsKCJTbG92YWsiLCBjb3VudHJ5KSB+ICJTbG92YWtpYSIsCiAgICAgICAgZ3JlcGwoIlZpbmNlbnQiLCBjb3VudHJ5KSB+ICJTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcyIsCiAgICAgICAgZ3JlcGwoIkx1Y2lhIiwgY291bnRyeSkgfiAiU2FpbnQgTHVjaWEiLAogICAgICAgIGdyZXBsKCJNYXJ0aW4iLCBjb3VudHJ5KSB+ICJNYXJ0aW5pcXVlIiwKICAgICAgICAjIGNhcmVmdWwgd2l0aCBDb25nbwogICAgICAgIGNvdW50cnkgPT0gIkRlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlIENvbmdvIiB8CiAgICAgICAgICBjb3VudHJ5ID09ICJDb25nbywgRGVtLiBSZXAuIiB+ICJDb25nbyAoS2luc2hhc2EpIiwKICAgICAgICBjb3VudHJ5ID09ICJDb25nbyIgfCBjb3VudHJ5ID09ICJDb25nbywgUmVwLiIgfiAiQ29uZ28gKEJyYXp6YXZpbGxlKSIsCiAgICAgICAgVFJVRSB+IGNvdW50cnkpKSwKICAgIGJ5ID0gYnkpCn0KYGBgCgojIyBXb3JsZCBiYW5rIHBvcHVsYXRpb24gZGF0YQoKV29ybGQgYmFuayBkYXRhIGxvb2tzIGJlc3QuICBPbmx5IHR3byB5ZWFycyBvbGQuCgpgYGB7cn0KbGlicmFyeSh3YnN0YXRzKQpkZW1vX2RhdGEgPC0gam9pbmVkICU+JQogIGdyb3VwX2J5KGBDb3VudHJ5L1JlZ2lvbmApICU+JQogIHN1bW1hcmlzZV9hdCh2YXJzKGNvbmZpcm1lZCwgZGVhdGhzLCByZWNvdmVyZWQpLCBtYXgpICU+JQogIGpvaW5fY291bnRyeSgKICAgIHdiKGluZGljYXRvciA9ICJTUC5QT1AuVE9UTCIsIHN0YXJ0ZGF0ZSA9IDIwMTgsIGVuZGRhdGUgPSAyMDE4KSAlPiUKICAgICAgcmVuYW1lKHBvcHVsYXRpb24gPSB2YWx1ZSkgJT4lCiAgICAgIHNlbGVjdChjb3VudHJ5LCBwb3B1bGF0aW9uKSkgJT4lCiAgbXV0YXRlKHBvcHVsYXRpb24gPSBjYXNlX3doZW4oCiAgICBgQ291bnRyeS9SZWdpb25gID09ICJUYWl3YW4qIiB+IDIzNzgwNDUyLAogICAgYENvdW50cnkvUmVnaW9uYCA9PSAiQ3J1aXNlIFNoaXAiIH4gMzcxMSwKICAgIFRSVUUgfiBwb3B1bGF0aW9uKSkgJT4lCiAgam9pbl9jb3VudHJ5KAogICAgd2IoaW5kaWNhdG9yID0gIlNQLlBPUC42NVVQLlRPLlpTIiwgc3RhcnRkYXRlID0gMjAxOCwgZW5kZGF0ZSA9IDIwMTgpICU+JQogICAgICByZW5hbWUocGN0X292ZXJfNjUgPSB2YWx1ZSkgJT4lCiAgICAgIHNlbGVjdChjb3VudHJ5LCBwY3Rfb3Zlcl82NSkpICU+JQogIG11dGF0ZShjb25maXJtZWRfcGN0ID0gY29uZmlybWVkICogMTAwIC8gcG9wdWxhdGlvbiwKICAgICAgICAgZGVhdGhzX3BjdCA9IGRlYXRocyAqIDEwMCAvIHBvcHVsYXRpb24sCiAgICAgICAgIHJlY292ZXJlZF9wY3QgPSByZWNvdmVyZWQgKiAxMDAgLyBwb3B1bGF0aW9uKSAlPiUKICB1bmdyb3VwKCkKCmRlbW9fZGF0YSAlPiUgYXJyYW5nZShkZXNjKGRlYXRoc19wY3QpLCBkZXNjKGRlYXRocykpCgpkZW1vX2RhdGEgJT4lCiAgYXJyYW5nZShkZXNjKGRlYXRoc19wY3QpLCBkZXNjKGRlYXRocykpICU+JQogIGhlYWQoMTUpICU+JQogIG11dGF0ZShgQ291bnRyeS9SZWdpb25gID0gcmVvcmRlcihgQ291bnRyeS9SZWdpb25gLCBkZXNjKGRlYXRoc19wY3QpKSkgJT4lCiAgZ2dwbG90KGFlcyhjb25maXJtZWRfcGN0LCBkZWF0aHNfcGN0KSkgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYENvdW50cnkvUmVnaW9uYCkpICsKICBnZW9tX2xpbmUoc3RhdCA9ICJzbW9vdGgiLCBtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuMikKCmRlbW9fZGF0YSAlPiUKICBhcnJhbmdlKGRlc2MoZGVhdGhzX3BjdCksIGRlc2MoZGVhdGhzKSkgJT4lCiAgaGVhZCgxNSkgJT4lCiAgbXV0YXRlKGBDb3VudHJ5L1JlZ2lvbmAgPSByZW9yZGVyKGBDb3VudHJ5L1JlZ2lvbmAsIGRlc2MoZGVhdGhzX3BjdCkpKSAlPiUKICBnZ3Bsb3QoYWVzKHBjdF9vdmVyXzY1LCBkZWF0aHNfcGN0KSkgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYENvdW50cnkvUmVnaW9uYCkpICsKICBnZW9tX2xpbmUoc3RhdCA9ICJzbW9vdGgiLCBtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuMikKCmRlbW9fZGF0YSAlPiUKICBmaWx0ZXIoIWBDb3VudHJ5L1JlZ2lvbmAgJWluJSBjKCJDcnVpc2UgU2hpcCIsICJTYW4gTWFyaW5vIiwgIk1hcnRpbmlxdWUiKSkgJT4lCiAgYXJyYW5nZShkZXNjKGRlYXRoc19wY3QpLCBkZXNjKGRlYXRocykpICU+JQogIGhlYWQoMTUpICU+JQogIG11dGF0ZShgQ291bnRyeS9SZWdpb25gID0gcmVvcmRlcihgQ291bnRyeS9SZWdpb25gLCBkZXNjKGRlYXRoc19wY3QpKSkgJT4lCiAgZ2dwbG90KGFlcyhjb25maXJtZWRfcGN0LCBkZWF0aHNfcGN0KSkgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYENvdW50cnkvUmVnaW9uYCkpICsKICBnZW9tX2xpbmUoc3RhdCA9ICJzbW9vdGgiLCBtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuMikKCmRlbW9fZGF0YSAlPiUKICBmaWx0ZXIoIWBDb3VudHJ5L1JlZ2lvbmAgJWluJSBjKCJDcnVpc2UgU2hpcCIsICJTYW4gTWFyaW5vIiwgIk1hcnRpbmlxdWUiKSkgJT4lCiAgYXJyYW5nZShkZXNjKGRlYXRoc19wY3QpLCBkZXNjKGRlYXRocykpICU+JQogIGhlYWQoMTUpICU+JQogIG11dGF0ZShgQ291bnRyeS9SZWdpb25gID0gcmVvcmRlcihgQ291bnRyeS9SZWdpb25gLCBkZXNjKGRlYXRoc19wY3QpKSkgJT4lCiAgZ2dwbG90KGFlcyhwY3Rfb3Zlcl82NSwgZGVhdGhzX3BjdCkpICsKICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IGBDb3VudHJ5L1JlZ2lvbmApKSArCiAgZ2VvbV9saW5lKHN0YXQgPSAic21vb3RoIiwgbWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjIpCgpkZW1vX2RhdGEgJT4lCiAgZmlsdGVyKCFgQ291bnRyeS9SZWdpb25gICVpbiUgYygiQ3J1aXNlIFNoaXAiLCAiU2FuIE1hcmlubyIsICJNYXJ0aW5pcXVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJdGFseSIpKSAlPiUKICBhcnJhbmdlKGRlc2MoZGVhdGhzX3BjdCksIGRlc2MoZGVhdGhzKSkgJT4lCiAgaGVhZCgxNSkgJT4lCiAgbXV0YXRlKGBDb3VudHJ5L1JlZ2lvbmAgPSByZW9yZGVyKGBDb3VudHJ5L1JlZ2lvbmAsIGRlc2MoZGVhdGhzX3BjdCkpKSAlPiUKICBnZ3Bsb3QoYWVzKHBjdF9vdmVyXzY1LCBkZWF0aHNfcGN0KSkgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYENvdW50cnkvUmVnaW9uYCkpICsKICBnZW9tX2xpbmUoc3RhdCA9ICJzbW9vdGgiLCBtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuMikKCgpkZW1vX2RhdGEgJT4lCiAgZmlsdGVyKCFgQ291bnRyeS9SZWdpb25gICVpbiUgYygiQ3J1aXNlIFNoaXAiLCAiU2FuIE1hcmlubyIsICJNYXJ0aW5pcXVlIikpICU+JQogIGFycmFuZ2UoZGVzYyhkZWF0aHNfcGN0KSwgZGVzYyhkZWF0aHMpKSAlPiUKICBtdXRhdGUoYENvdW50cnkvUmVnaW9uYCA9IHJlb3JkZXIoYENvdW50cnkvUmVnaW9uYCwgZGVzYyhkZWF0aHNfcGN0KSkpICU+JQogIGdncGxvdChhZXMocGN0X292ZXJfNjUsIGRlYXRoc19wY3QpKSArCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBgQ291bnRyeS9SZWdpb25gKSkgKwogIGdlb21fbGluZShzdGF0ID0gInNtb290aCIsIG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC4yKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCiMgVVMgU3RhdGUtbGV2ZWwKCmBgYHtyfQpsaWJyYXJ5KGNvdmlkMTl1cykKZ2V0X3N0YXRlc19kYWlseSgpCgpzdGF0ZV9jb21wX2RhdGEgPC0gc3RhdGVfZGF0YSAlPiUKICBnZW5Db21wRGF0YShnZW9fbGV2ZWwgPSAiUHJvdmluY2UvU3RhdGUiLCBtaW5fdG90YWwgPSAyKQpzdGF0ZV9jb21wX2RhdGEgJT4lIHBsb3RDb21wcygpCmBgYAoKIyMgVVMgU3RhdGUgdGVzdGluZwoKYGBge3J9CiNsaWJyYXJ5KHJ2ZXN0KQojbGlicmFyeShtYWdyaXR0cikKI2xpYnJhcnkoanNvbmxpdGUpCgooc3RhdGVfdGVzdHMgPC0gdXJsKCJodHRwczovL2NvdmlkdHJhY2tpbmcuY29tL2FwaS9zdGF0ZXMvZGFpbHkiKSAlPiUKICBqc29ubGl0ZTo6ZnJvbUpTT04oKSAlPiUKICBtdXRhdGVfYXQodmFycyhkYXRlKSwgeW1kKSkKYGBgCgpgYGB7ciBmaWcuaGVpZ2h0PTIwLCBmaWcud2lkdGg9N30Kc3RhdGVfdGVzdHMgJT4lIHNlbGVjdCgtdG90YWwpICU+JQogIGdyb3VwX2J5KHN0YXRlKSAlPiUKICBzdW1tYXJpc2UoCiAgICBwb3NpdGl2ZV90ZXN0X3JhdGUgPSBzdW0ocG9zaXRpdmUpLygoc3VtKHBvc2l0aXZlKSArIHN1bShuZWdhdGl2ZSkpKSkgJT4lCiAgYXJyYW5nZShkZXNjKHBvc2l0aXZlX3Rlc3RfcmF0ZSkpCgpzdGF0ZV90ZXN0cyAlPiUgc2VsZWN0KC10b3RhbCkgJT4lCiAgZ3JvdXBfYnkoc3RhdGUpICU+JQogIGdhdGhlcihzdGF0LCB2YWx1ZSwgLWRhdGUsIC1zdGF0ZSkgICU+JQogIG11dGF0ZV9hdCh2YXJzKHZhbHVlKSwgYXMubnVtZXJpYykgJT4lCiAgZ2dwbG90KGFlcyhkYXRlLCB2YWx1ZSwgZmlsbCA9IHN0YXQpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBmYWNldF9ncmlkKHZhcnMoc3RhdGUpLCBzY2FsZXMgPSAiZnJlZV95IikKYGBgCgoKYGBge3J9CnN0YXRlcyA8LSBzdGF0ZV9kYXRhICU+JQogIGxlZnRfam9pbihzdGF0ZV9hYmJfbWFwLCBieSA9IGMoIlByb3ZpbmNlL1N0YXRlIiA9ICJuYW1lIikpICU+JQogIGxlZnRfam9pbihzdGF0ZV90ZXN0cyAlPiUKICAgICAgICAgICAgICByZW5hbWVfYXQodmFycygtZGF0ZSwgLXN0YXRlKSwgbGlzdCh+IHBhc3RlMCguLCAiX3Rlc3RzIikpKSwKICAgICAgICAgICAgYnkgPSBjKCJhYmIiID0gInN0YXRlIiwgImRhdGUiKSkKYGBgCgoKYGBge3IgZmlnLmhlaWdodD0yMCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Kc291cmNlKCIuLi9jb3ZpZGNvbXBfbGliLlIiKQpzdGF0ZXMgJT4lIHNlbGVjdCgtYWJiLCAtZGF0ZUNoZWNrZWRfdGVzdHMpICU+JQogIGdlbkNvbXBEYXRhKGdlb19sZXZlbCA9ICJQcm92aW5jZS9TdGF0ZSIsIG1pbl90b3RhbCA9IDIpICU+JQogIHBsb3RDb21wcyhtaW5fdG90YWwgPSAyLCBzbW9vdGhfcGxvdHMgPSBUUlVFLCBzY2FsZV90b19maXQgPSBUUlVFKQpgYGAKCmBgYHtyfQpqaHUgPC0gZmV0Y2hQcmVwSmh1RGF0YSgpCmBgYAoKYGBge3J9CnNvdXJjZSgiLi4vY292aWRjb21wX2xpYi5SIikKcCA8LSBmZXRjaFByZXBKaHVEYXRhKCkgJT4lCiAgZ2VuQ29tcERhdGEoKSAlPiUgCiAgZmlsdGVyKGxvY2F0aW9uICE9ICJTYW4gTWFyaW5vIikgJT4lCiAgcGxvdENvbXBzKCkKc3VwcHJlc3NXYXJuaW5ncyhwcmludChwKSkKYGBgCgpgYGB7cn0KYGBgCgpgYGB7cn0Kc291cmNlKCIuLi9jb3ZpZGNvbXBfbGliLlIiKQpjb3Z0cmFjayA8LSBmZXRjaFByZXBDb3ZUcmFja0RhdGEoKQpgYGAKYGBge3J9CnAgPC0gY292dHJhY2sgJT4lIGdlbkNvbXBEYXRhKGdlb19sZXZlbCA9ICJzdGF0ZSIsIG1pbl9zdGF0ID0gImRlYXRoIiwgbWluX3RocmVzaCA9IDEpICU+JQogIHBsb3RDb21wcygpCgpzdXBwcmVzc1dhcm5pbmdzKHByaW50KHApKQpgYGAKCiMgQ29yb25hIERhdGEgU2NyYXBlciBwcm9qZWN0CmBgYHtyfQpsaWJyYXJ5KGpzb25saXRlKQpjZHNfZGF0YSA8LSBqc29ubGl0ZTo6ZnJvbUpTT04oImh0dHBzOi8vY29yb25hZGF0YXNjcmFwZXIuY29tL3RpbWVzZXJpZXMtYnlMb2NhdGlvbi5qc29uIikKbmFtZXMoY2RzX2RhdGEpCmBgYAoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQppdGEgPC0gY2RzX2RhdGFbWyJJVEEiXV0KbmFtZXMoaXRhKQpgYGAKCmBgYHtyfQpjZHNfZGF0YSAlPiUgaGVhZCgyKQpgYGAKYGBge3J9CnNhcHBseShjZHNfZGF0YSwgIltbIiwgImRhdGVzIikgJT4lIHVubGlzdCgpICU+JSBuYW1lcygpICU+JSBnc3ViKCJeLipcXC4iLCAiIiwgLikgJT4lIHRhYmxlKCkgCnNhcHBseShjZHNfZGF0YSwgbmFtZXMpICU+JSB1bmxpc3QgJT4lIHRhYmxlICU+JSBzb3J0CmBgYAoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGpzb25saXRlKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKCmNkc19kYXRhIDwtIGpzb25saXRlOjpmcm9tSlNPTigKICAiaHR0cHM6Ly9jb3JvbmFkYXRhc2NyYXBlci5jb20vdGltZXNlcmllcy1ieUxvY2F0aW9uLmpzb24iKQoKdmFsdWVPck5BIDwtIGZ1bmN0aW9uKHgpIHsKICBpZmVsc2UoIWlzLm51bGwoeCksIHgsIE5BKQp9CgpnZXRUc01heCA8LSBmdW5jdGlvbihjZHNfbG9jLCBtZXRyaWMpIHsKICBzdXBwcmVzc1dhcm5pbmdzKG1heChhcy5udW1lcmljKHNhcHBseSgKICAgIEZpbHRlcihmdW5jdGlvbih5KSB7IWlzLm51bGwoeVtbbWV0cmljXV0pfSwgY2RzX2xvYyRkYXRlcyksICJbWyIsIG1ldHJpYykpKSkKfQoKbmFtZXMoY2RzX2RhdGEpICU+JQogIGxhcHBseShGVU4gPSBmdW5jdGlvbih4KSB7CiAgICBsaXN0KAogICAgICBuYW1lID0geCwKICAgICAgY291bnRyeSA9IHZhbHVlT3JOQShjZHNfZGF0YVtbeF1dJGNvdW50cnkpLAogICAgICBhZ2dyZWdhdGUgPSB2YWx1ZU9yTkEoY2RzX2RhdGFbW3hdXSRhZ2dyZWdhdGUpLAogICAgICBzdGF0ZSA9IHZhbHVlT3JOQShjZHNfZGF0YVtbeF1dJHN0YXRlKSwKICAgICAgcG9wdWxhdGlvbiA9IHZhbHVlT3JOQShjZHNfZGF0YVtbeF1dJHBvcHVsYXRpb24pLAogICAgICBjb3VudHkgPSB2YWx1ZU9yTkEoY2RzX2RhdGFbW3hdXSRjb3VudHkpLAogICAgICBjaXR5ID0gdmFsdWVPck5BKGNkc19kYXRhW1t4XV0kY2l0eSksCiAgICAgIG1heF9kZWF0aHMgPSBnZXRUc01heChjZHNfZGF0YVtbeF1dLCAiZGVhdGhzIiksCiAgICAgIG1heF9jYXNlcyA9IGdldFRzTWF4KGNkc19kYXRhW1t4XV0sICJjYXNlcyIpLAogICAgICBtYXhfdGVzdGVkID0gZ2V0VHNNYXgoY2RzX2RhdGFbW3hdXSwgInRlc3RlZCIpLAogICAgICBtYXhfYWN0aXZlID0gZ2V0VHNNYXgoY2RzX2RhdGFbW3hdXSwgImFjdGl2ZSIpLAogICAgICBtYXhfcmVjb3ZlcmVkID0gZ2V0VHNNYXgoY2RzX2RhdGFbW3hdXSwgInJlY292ZXJlZCIpLAogICAgICAjIGRlYXRoc190cyA9IGxhcHBseShuYW1lcyhjZHNfZGF0YVtbeF1dJGRhdGVzKSwgRlVOID0gZnVuY3Rpb24oeCkgewogICAgICAjICAgYyh4ID0gdmFsdWVPck5BKGNkc19kYXRhW1t4XV0kZGF0ZXNbW3hdXSRkZWF0aHMpKQogICAgICAjIH0pLAogICAgICBkYXRlID0gbGlzdChuYW1lcyhjZHNfZGF0YVtbeF1dJGRhdGVzKSksCiAgICAgIHRzX3ZhbHVlcyA9IGxpc3QoY2RzX2RhdGFbW3hdXSRkYXRlcykpCiAgICB9KSAlPiUKICBiaW5kX3Jvd3MoKSAlPiUgCiAgbXV0YXRlKAogICAgbWF4X2RlYXRocyA9IG5hX2lmKG1heF9kZWF0aHMsIC1JbmYpLAogICAgbWF4X2Nhc2VzID0gbmFfaWYobWF4X2Nhc2VzLCAtSW5mKSwKICAgIG1heF90ZXN0ZWQgPSBuYV9pZihtYXhfdGVzdGVkLCAtSW5mKSwKICAgIG1heF9hY3RpdmUgPSBuYV9pZihtYXhfYWN0aXZlLCAtSW5mKSwKICAgIG1heF9yZWNvdmVyZWQgPSBuYV9pZihtYXhfcmVjb3ZlcmVkLCAtSW5mKSkgJT4lCiAgbXV0YXRlKAogICAgbWF4X2RlYXRoc19wZXJfY2FwaXRhID0gbWF4X2RlYXRocyAvIHBvcHVsYXRpb24gKiAxZTYsCiAgICBtYXhfdGVzdGVkX3Blcl9jYXBpdGEgPSBtYXhfdGVzdGVkIC8gcG9wdWxhdGlvbiAqIDFlNiwKICAgIG1heF9yZWNvdmVyZWRfcGVyX2NhcGl0YSA9IG1heF9yZWNvdmVyZWQgLyBwb3B1bGF0aW9uICogMWU2LAogICAgbWF4X3Bvc2l0aXZlX3Rlc3RfcmF0ZSA9IG1heF9jYXNlcyAvIG1heF90ZXN0ZWQpICU+JQogIHVubmVzdChjKGRhdGUsIHRzX3ZhbHVlcykpICU+JQogIG11dGF0ZSgKICAgIGRhdGUgPSB5bWQoZGF0ZSksCiAgICBkZWF0aHMgPSB1bmxpc3Qoc2FwcGx5KHRzX3ZhbHVlcywgRlVOID0gZnVuY3Rpb24oeCkgewogICAgICByZXR1cm4odmFsdWVPck5BKHgkZGVhdGhzKSkgfSkpLAogICAgYWN0aXZlID0gdW5saXN0KHNhcHBseSh0c192YWx1ZXMsIEZVTiA9IGZ1bmN0aW9uKHgpIHsKICAgICAgcmV0dXJuKHZhbHVlT3JOQSh4JGFjdGl2ZSkpIH0pKSwKICAgIGNhc2VzID0gdW5saXN0KHNhcHBseSh0c192YWx1ZXMsIEZVTiA9IGZ1bmN0aW9uKHgpIHsKICAgICAgcmV0dXJuKHZhbHVlT3JOQSh4JGNhc2VzKSkgfSkpLAogICAgcmVjb3ZlcmVkID0gdW5saXN0KHNhcHBseSh0c192YWx1ZXMsIEZVTiA9IGZ1bmN0aW9uKHgpIHsKICAgICAgcmV0dXJuKHZhbHVlT3JOQSh4JHJlY292ZXJlZCkpIH0pKSwKICAgIHRlc3RlZCA9IHVubGlzdChzYXBwbHkodHNfdmFsdWVzLCBGVU4gPSBmdW5jdGlvbih4KSB7CiAgICAgIHJldHVybih2YWx1ZU9yTkEoeCR0ZXN0ZWQpKSB9KSksCiAgICBncm93dGhGYWN0b3IgPSB1bmxpc3Qoc2FwcGx5KHRzX3ZhbHVlcywgRlVOID0gZnVuY3Rpb24oeCkgewogICAgICByZXR1cm4odmFsdWVPck5BKHgkZ3Jvd3RoRmFjdG9yKSkgfSkpLAogICAgY2ZyID0gZGVhdGhzIC8gY2FzZXMsCiAgICBwdHIgPSBjYXNlcyAvIHRlc3RlZCwKICAgIHJyID0gcmVjb3ZlcmVkIC8gY2FzZXMKICAgICkgJT4lCiAgc2VsZWN0KC10c192YWx1ZXMpICU+JQogIGdhdGhlcihzdGF0LCB2YWx1ZSwgZGVhdGhzLCBhY3RpdmUsIGNhc2VzLCByZWNvdmVyZWQsIHRlc3RlZCwKICAgICAgICAgZ3Jvd3RoRmFjdG9yLCBjZnIsIHB0ciwgcnIpICU+JQogIG11dGF0ZShwb3BNID0gdmFsdWUgLyBwb3B1bGF0aW9uICogMWU2KSAtPiBjZHMKYGBgCgpgYGB7cn0KcmVhZF9jc3YodXJsKCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbnl0aW1lcy9jb3ZpZC0xOS1kYXRhL21hc3Rlci91cy1jb3VudGllcy5jc3YiKSkgJT4lCiAgbXV0YXRlKGNmciA9IGRlYXRocyAvIGNhc2VzLCBjb3VudHkgPSBwYXN0ZShjb3VudHksICJDb3VudHkiKSkgJT4lCiAgbXV0YXRlKHN0YXRlID0gdW5saXN0KHNhcHBseShzdGF0ZSwgRlVOID0gZnVuY3Rpb24oeCkgeyB1bmxpc3QodmFsdWVPck5BKHN0YXRlLmFiYlt3aGljaChzdGF0ZS5uYW1lID09IHgpXSkpIH0pKSkgJT4lCiAgZ2F0aGVyKHN0YXQsIHRvdGFsLCBjYXNlcywgZGVhdGhzLCBjZnIpICU+JQogIHNlbGVjdCgtZmlwcykgJT4lCiAgdW5pdGUoY291bnR5LCBjb3VudHksIHN0YXRlLCBzZXAgPSAiLCAiKSAlPiUKICBtdXRhdGUoY291bnR5ID0gcGFzdGUwKGNvdW50eSwgIiwgVVNBIikpICU+JQogIGxlZnRfam9pbihjZHMgJT4lIGZpbHRlcihjb3VudHJ5ID09ICJVU0EiICYgYWdncmVnYXRlID09ICJjb3VudHkiKSAlPiUgc2VsZWN0KG5hbWUsIHBvcHVsYXRpb24pICU+JSB1bmlxdWUoKSwgYnkgPSBjKCJjb3VudHkiID0gIm5hbWUiKSkgJT4lCiAgbXV0YXRlKHBvcE0gPSB0b3RhbCAvIHBvcHVsYXRpb24gKiAxZTYpICU+JQogIGdyb3VwX2J5KGNvdW50eSkgJT4lCiAgbXV0YXRlKG1heF9kZWF0aHMgPSBtYXgodG90YWxbc3RhdCA9PSAiZGVhdGhzIl0sIG5hLnJtID0gVFJVRSkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBmaWx0ZXIobWF4X2RlYXRocyA+PSA1KSAlPiUKICBnZW5QbG90Q29tcHMoZ2VvX2xldmVsID0gImNvdW50eSIpCmBgYAoK